(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
and(true, y) → y
and(false, y) → false
eq(nil, nil) → true
eq(cons(t, l), nil) → false
eq(nil, cons(t, l)) → false
eq(cons(t, l), cons(t', l')) → and(eq(t, t'), eq(l, l'))
eq(var(l), var(l')) → eq(l, l')
eq(var(l), apply(t, s)) → false
eq(var(l), lambda(x, t)) → false
eq(apply(t, s), var(l)) → false
eq(apply(t, s), apply(t', s')) → and(eq(t, t'), eq(s, s'))
eq(apply(t, s), lambda(x, t)) → false
eq(lambda(x, t), var(l)) → false
eq(lambda(x, t), apply(t, s)) → false
eq(lambda(x, t), lambda(x', t')) → and(eq(x, x'), eq(t, t'))
if(true, var(k), var(l')) → var(k)
if(false, var(k), var(l')) → var(l')
ren(var(l), var(k), var(l')) → if(eq(l, l'), var(k), var(l'))
ren(x, y, apply(t, s)) → apply(ren(x, y, t), ren(x, y, s))
ren(x, y, lambda(z, t)) → lambda(var(cons(x, cons(y, cons(lambda(z, t), nil)))), ren(x, y, ren(z, var(cons(x, cons(y, cons(lambda(z, t), nil)))), t)))
Rewrite Strategy: FULL
(1) DecreasingLoopProof (EQUIVALENT transformation)
The following loop(s) give(s) rise to the lower bound Ω(2n):
The rewrite sequence
ren(x, y, apply(lambda(z35827_0, lambda(z37311_0, t37312_0)), s)) →+ apply(lambda(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), lambda(var(cons(x, cons(y, cons(lambda(var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), ren(z35827_0, var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), ren(z37311_0, var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), t37312_0))), nil)))), ren(x, y, ren(var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), var(cons(x, cons(y, cons(lambda(var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), ren(z35827_0, var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), ren(z37311_0, var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), t37312_0))), nil)))), ren(z35827_0, var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), ren(z37311_0, var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), t37312_0)))))), ren(x, y, s))
gives rise to a decreasing loop by considering the right hand sides subterm at position [0,1,0,0,1,1,0,1,2].
The pumping substitution is [t37312_0 / apply(lambda(z35827_0, lambda(z37311_0, t37312_0)), s)].
The result substitution is [x / z37311_0, y / var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil))))].
The rewrite sequence
ren(x, y, apply(lambda(z35827_0, lambda(z37311_0, t37312_0)), s)) →+ apply(lambda(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), lambda(var(cons(x, cons(y, cons(lambda(var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), ren(z35827_0, var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), ren(z37311_0, var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), t37312_0))), nil)))), ren(x, y, ren(var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), var(cons(x, cons(y, cons(lambda(var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), ren(z35827_0, var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), ren(z37311_0, var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), t37312_0))), nil)))), ren(z35827_0, var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), ren(z37311_0, var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil)))), t37312_0)))))), ren(x, y, s))
gives rise to a decreasing loop by considering the right hand sides subterm at position [0,1,1,2,1,0,1,1,0,1,2].
The pumping substitution is [t37312_0 / apply(lambda(z35827_0, lambda(z37311_0, t37312_0)), s)].
The result substitution is [x / z37311_0, y / var(cons(z35827_0, cons(var(cons(x, cons(y, cons(lambda(z35827_0, lambda(z37311_0, t37312_0)), nil)))), cons(lambda(z37311_0, t37312_0), nil))))].
(2) BOUNDS(2^n, INF)